<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        #list1 {
            background: red;
        }

        #list2 {
            background: orange;
        }

        #list5 {
            background: green;
        }

        #list6 {
            background: pink;
        }
    </style>

</head>

<body>
    <div>
        <div id="list1">list1</div>
        <div id="list2">list2</div>
        <div id="list5">list5</div>
        <div id="list6">list6</div>
    </div>
    <script>
        function exchange(id_1, id_2) {
            var newNode = document.createElement('div')
            list1.parentNode.insertBefore(newNode, id_2)
            list1.parentNode.insertBefore(id_2, id_1)
            list1.parentNode.insertBefore(id_1, newNode)
            // 假设要交换第一个和第五个元素
            // 首先逻辑是先新建一个节点（标记节点），
            // 然后把这个节点插在第二个目标节点前面，相当于记下一个位置，
            // 然后把第二个目标节点插到第一个目标节点前面，
            // 再把第一个目标节点插在标记节点的后面，结束。

            list1.parentNode.removeChild(newNode)
        }
        // exchange(list2, list6)
    </script>
</body>

</html>